<?php

require "web.config.php";    
 
 class payController
 {
static $payObj='config_com';
     
      //-----------------后台主页
     //首页
function index($param){  
global $m,$_gp,$_df;
$name='支付页面';
$output['WIDsubject']='测试';
$output['WIDtotal_amount']='0.1';
$output['WIDbody']='学习学习学习';
include view(__ROOT__,str_replace('Controller','',__CLASS__),__FUNCTION__,'iconShare');//加载视图 
}

//打赏页面
function dsV($param){
global $m,$_gp,$_df;
//自定义金额打赏
if(!empty($_POST)){
		   //订单名称，必填
    $subject = '打赏一下';
    //付款金额，必填
   $total_amount = trim($_POST['WIDtotal_amount']);
    //商品描述，可空
   $body = trim($_POST['WIDbody']);
    
    $config_url=self::$payObj;
    

  pay($subject,$total_amount,$body,$config_url,1);
}
$name='打赏';
$output['WIDbody']='留言';



include view(__ROOT__,str_replace('Controller','',__CLASS__),__FUNCTION__,'iconShare');//加载视图 
} 

//监听支付状态
function payState(){
$val=0;
$dfOrder=getSession('dfOrder');
if(empty($dfOrder))
show_json($val);
$output = show(self::$db_zo,$dfOrder,'out_trade_no');
if(!empty($output))
$val=1;
show_json($val);
}


//表单支付
function formPay(){
	//订单名称，必填
    $subject = trim($_POST['WIDsubject']);
    //付款金额，必填
    $total_amount = trim($_POST['WIDtotal_amount']);
    //商品描述，可空
    $body = trim($_POST['WIDbody']);
    
    $config_url=self::$payObj;
  pay($subject,$total_amount,$body,$config_url);
}



//固定金额支付
function ds(){
	   //订单名称，必填
    $subject = '打赏一下';
    //付款金额，必填
    $total_amount =0.5;
    //商品描述，可空
    $body = '大家好';
    
    $config_url=self::$payObj;
  pay($subject,$total_amount,$body,$config_url,1);
}



#zfb交易记录
static $db_zo='zfb_order';

/*同步跳转
 * 
 * https://open.alipay.com/platform/manageHome.htm
 * 
 */
function return_url($param){   
global $m,$_gp,$_df;
require_once ROOT.sprintf("/module/alipay/%s.php",self::$payObj);
require_once ROOT.'/module/alipay/pagepay/service/AlipayTradeService.php';
$arr=$_GET;
!empty($arr['type'])||die('禁止访问');
unset($arr['type']); 
$param=$arr['paraR'];
unset($arr['paraR']); 
logs('return_url:'.json_encode($arr));
$alipaySevice = new AlipayTradeService($config); 
$result=$alipaySevice->check($arr);
logs('return_url-rt:'.json_encode($result));
/* 实际验证过程建议商户添加以下校验。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号，
2、判断total_amount是否确实为该订单的实际金额（即商户订单创建时的金额），
3、校验通知中的seller_id（或者seller_email) 是否为out_trade_no这笔单据的对应的操作方（有的时候，一个商户可能有多个seller_id/seller_email）
4、验证app_id是否为该商户本身。
*/
if($result) {//验证成功
	/////////////////////////////////////////////////////////////////////////////////////////////////

	//商户订单号
	$out_trade_no = htmlspecialchars($_GET['out_trade_no']);
	//支付宝交易号
	$trade_no = htmlspecialchars($_GET['trade_no']);
	$name='支付成功';
    $msg='订单号：'.$trade_no;

}
else {
//验证失败

 $name='支付失败';
 $msg='联系管理员解决';
}
//var_dump($param);

include view(__ROOT__,str_replace('Controller','',__CLASS__),__FUNCTION__,'iconShare');//加载视图
}



/* 异步跳转
 * 
 * https://open.alipay.com/platform/manageHome.htm
 * 
 */
function notify_url($param){
global $m,$_gp,$_df;
require_once ROOT.sprintf("/module/alipay/%s.php",self::$payObj);
require_once ROOT.'/module/alipay/pagepay/service/AlipayTradeService.php';
$arr=$_POST;
!empty($arr)||die('禁止访问');
$param=$arr['paraN'];
unset($arr['paraN']); 
logs('notify_url：'.json_encode($arr));
$alipaySevice = new AlipayTradeService($config);
$result = $alipaySevice->check($arr);
logs('notify_url-rt：'.json_encode($result));
/* 实际验证过程建议商户添加以下校验。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号，
2、判断total_amount是否确实为该订单的实际金额（即商户订单创建时的金额），
3、校验通知中的seller_id（或者seller_email) 是否为out_trade_no这笔单据的对应的操作方（有的时候，一个商户可能有多个seller_id/seller_email）
4、验证app_id是否为该商户本身。
*/
if($result) {
	//验证成功
	////////////////////////////////////////////////////////////////////////////////////////
	//商户订单号
	$out_trade_no = $_POST['out_trade_no'];
	//支付宝交易号
	$trade_no = $_POST['trade_no'];
	//交易状态
	$trade_status = $_POST['trade_status'];
	if($_POST['trade_status'] == 'TRADE_FINISHED') {
		//该笔订单在商户网站中已经做过处理
	
    }
    else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
		//该笔订单未在商户网站中做过处理

    }
$dt['out_trade_no'] = $arr['out_trade_no'];
$dt['trade_no'] = $arr['trade_no'];
$dt['trade_status'] = $arr['trade_status'];
$dt['subject'] = $arr['subject'];
$dt['body'] = $arr['body'];
$dt['receipt_amount'] = $arr['receipt_amount'];
$dt['time'] = $arr['notify_time'];
$myValue =update(self::$db_zo,$dt);
//充值记录添加成功
if($myValue){
//获取用户信息
$openid=$param;
$loginUser= show('user',$openid,'openid'); 
logs(array(
'oid'=>$openid,
'$loginUser'=>$loginUser
));

//增加用户余额
$newcoin=$loginUser['coin']+$dt['receipt_amount'];
update('user',array(
	'coin'=>$newcoin
),$loginUser['Id']); 
//添加充值记录
 update('paylog',array(
	'title'=>$dt['subject'],
	'trade_no'=>$dt['trade_no'],
	'money'=>$dt['receipt_amount'],
	'ye'=>$newcoin,
	'userId'=>$loginUser['Id'],
	'time'=>getTime(TIMESTAMP)
)); 
}
echo "success";	//请不要修改或删除
}else {
    //验证失败
    echo "fail";
}
}








     /*
      *接口调用记录 
      * 支付、查询、退款,不论成功与否都会写入log
      */
function payLog($param){   
if(!empty($_POST)){
	clear(self::$db_zo);
	show_json(1,'clear');
}
 $output = show(self::$db_zo,-1,'id','desc');
//$output=stripslashes($output);
//var_dump($output);
include view(__ROOT__,str_replace('Controller','',__CLASS__),__FUNCTION__,'backShare');//加载视图
}
   
   

}
 
 
 
?>